<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
  
    // 用户添加页面
    // admin/user/add
    public function getAdd()
    {
    	// 显示模板
    	return view('user.add');

    }

    // 接收表单数据 执行插入操作
    // admin/user/insert POST
    public function postInsert(Request $request)
    {	
    	$this->validate($request, [
    			'username' => 'required|regex:[^\w{6,18}$]',
    			'password' => 'required',
    			'repassword' => 'required|same:password',
    			'sex' => 'required',
    			'email' => 'required|email'
    		],[
    			'username.required' => '用户名不能为空',
    			'username.regex' => '用户名格式不正确',
    			'password.required' => '密码不能为空',
    			'repassword.required' => '确认密码不能为空',
    			'password.same' => '两次密码不一样',
    			'sex.required' => '性别不能为空',
    			'email.required' => '邮箱不能为空',
    			'email.email' => '邮箱格式不正确',
    		]);
    	//接收数据
    	// dd($request->all());
    	// $data = $request->only(['username','password','sex','email']);

    	$data = $request->except(['sex','repassword','_token']);

    	// 加密密码
    	$data['password'] = Hash::make($request->input('password'));
    	// 单独对某个字段进行处理 随机生成一个50位的字符串
    	$data['token'] = str_random(50);
    	// 将数据插入数据库
    	$res = DB::table('users')->insert($data);
    	if($res){
    		//成功 重定向 页面跳转到列表页
    		return redirect('admin/user/index')->with('success','数据添加成功');
    	}else{
    		//失败 回到添加页
    		return back()->with('error','数据插入失败');
    	}
    }

    // 用户列表页
    // admin/user/index
    public function getIndex(Request $request)
    {

       // dd('index');

    	// 读取数据 并且分页
    	 $users=DB::table('users')
         ->where(function($query)use($request){
            $query->where('username','like','%'.$request->input('keywords').'%');
        })
        ->paginate($request->input('num',10));
        
        //解析模板
        return view('user.index',['users'=>$users,'request'=>$request->all()]);  
    }
    
    /**
     * 用户数据的修改 显示表单
     */
    //   /admin/user/edit
    public function getEdit($id)
    {
        // 查询数据
        $res =  DB::table('users')->where('id',$id)->first();
        //显示模板 分配变量
        return view('user.edit',['userinfo'=>$res]);
    }

    /**
     * 用户数据的修改 修改数据库
     */
    public function postUpdate(Request $request)
    {
        //接收数据
        $data=$request->only(['username','email']);
        $id=$request->input('id');
        //执行修改
        $res=DB::table('users')->where('id',$id)->update($data);
        if($res){
            //成功 页面跳转到列表页
            return redirect('admin/user/index')->with('success','数据修改成功');
        }else{
            //失败 跳转到添加页
            return back()->with('error','数据修改失败');
        }
    }

    // 用户的数据删除
    // admin/user/delete  get
    public function getDelete($id){
        // 执行删除
        $res = DB::table('users')->where('id',$id)->delete();
        if($res){
            //成功 页面跳转到列表页
            return redirect('admin/user/index')->with('success','数据删除成功');
        }else{
            //失败 跳转到添加页
            return back()->with('error','数据删除失败');
        }
    }
}
